Subject: NetBIOS connect flow.

From: [email-masked] (Scott Adams)
Date: Wed, 21 Jul 1993 16:34:47 -0400 (EDT)

I'm no NetBIOS expert, but what follows is what I understand to be the
dialog that takes place in order to establish a NetBIOS session (over
DLS).

The network looks like:

                  +----------+                  +----------+
                  |          |      Tunnel      |          |
                  |   DLSw   +==================+   DLSw   |
                  |          |                  |          |
                  +----+-----+                  +----+-----+
                       |                             |
                  LAN  |                         LAN |
                       |                             |
                  +----+-----+                  +----+-----+
                  | End Stn  |                  | End Stn  |
                  +----------+                  +----------+

The flow of traffic would be:

        End Stn           DLSw                  DLSw           End Stn
        -------           ----                  ----           -------
           | Name_Qry(F)   |    NETBIOS_NQ       |  Name_Qry(F)   |
Note 1.    | ------------> | ------------------> | -------------> |
           |               |                     |                |
           | Name_Rec      |    NETBIOS_NR       |  Name_Rec      |
           | <------------ | <------------------ | <------------- |
           |               |                     |                |
           | Name_Qry(C)   |    NETBIOS_NQ       |  Name_Qry(C)   |
Note 2.    | ------------> | ------------------> | -------------> |
           |               |                     |                |
           | Name_Rec(L)   |    NETBIOS_NR       |  Name_Rec(L)   |
Note 3.    | <------------ | <------------------ | <------------- |
           |               |                     |                |
           |  SABME        |    CONTACT          |  SABME         |
Note 4.    | ------------> | ------------------> | -------------> |
           |   UA          |       .             |   UA           |
           | <------------ |       .             | <------------- |
Note 5.    |  RR           |       .             |  RR            |
           | ------------> |       .             | -------------> |
           |   RNR         |       .             |   RR           |
           | <-----------  |     CONTACTED       | <------------- |
           |   RR          | <-----------------  |                |
           | <------------ |                     |                |
           |               |                     |                |
           | Sess_Init     |   I-Frame           |  Sess_Init     |
Note 6.    | ------------> | ------------------> | -------------> |
           |               |                     |                |
           | Sess_Conf     |    I-Frame          |  Sess_Conf     |
           | <------------ | <------------------ | <------------- |
           |               |                     |                |
           |               |                     |                |

Note 1.  This is a broadcast Name_Query intended to locate the
         destination end station's MAC addr.

Note 2.  This is a directed Name_Query Call packet that is intended to
         find out if the destination end station has a LISTEN
         outstanding for the source Name.

Note 3.  This Name_Recognized indicates that a LISTEN was outstanding,
         meaning it's ok to establish a session.

Note 4.  The SABME initiates the LLC Type 2 Connection for the NetBIOS
         session.

Note 5.  I have shown what I think connection establishment would look
         like using the immediate UA/RNR response indicated in the
         RFC.  Witholding the UA could also be applied here, allowing
         the RNR to be dispensed with.

Note 6.  The Session_Init packet begins the transmission of I frames
         over the new connection, and initiates the NetBIOS session.

I've not tried to address any error conditions.  I'm also not aware of
any exceptions that might be "common."  This should be a good starting
point.

Scott